package com.zkzx.util.json;

import com.alibaba.fastjson.JSON;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;

import java.io.IOException;
import java.io.Serializable;
import java.util.List;
import java.util.Map;

/**
 * @author young Email:yanghui@zkraising.com
 * @description JSON返回结果处理工具类
 * @company 北京中科智兴物联科技有限公司 @版权所有
 * @since 2021年04月23日 10时45分
 */
@Slf4j
public class JSONResultUtil {

    /**
     * 返回操作的结果json
     * @param data 响应数据
     * @return
     */
    public static <T> String object2JSON(T data){
        return JSON.toJSONString(data, JSONUtil.getSerializerFeatures());
    }

    /**
     * 返回集合json数据
     * @return
     */
    public static String list2JSON(List<? extends Serializable> result){
        if((result == null) || CollectionUtils.isEmpty(result)){
            return "{}";
        }
        return JSON.toJSONString(result, JSONUtil.getSerializerFeatures());
    }

    /**
     * 返回map json数据
     * @return
     */
    public static String map2JSON(Map<? extends Serializable, ? extends Serializable> result){
        return JSON.toJSONString(JSON.toJSON(result), JSONUtil.getSerializerFeatures());
    }

    public static Object toObject(String jsonString, Class cls) {
        try {
            ObjectMapper objectMapper = new ObjectMapper();
            return objectMapper.readValue(jsonString, cls);
        } catch (IOException e) {
            log.error("转换异常：",e);
            return null;
        }
    }
}
